, , ,

rdiff-backup : Solution de sauvegarde incrémentielle

Faire des sauvegardes différentielles journalières de son /home et supprimer les sauvegardes vieilles d'une semaine par exemple. Ceci est réalisé via le logiciel rdiff-backup. J'explique également comment tout automatiser.

Installation

Pour installer rdiff-backup, il vous suffit de lancer la commande suivante :

sudo apt-get install rdiff-backup

Pour Ubuntu « Gutsy Gibbon » 7.10 il suffit de cliquer ici.

Utilisation

Faire la sauvegarde

Voici la commande qui permet de faire une sauvegarde :

rdiff-backup --exclude /home/mon_login/.aMule /home/mon_login /repertoire_de_sauvegarde

Ici on sauvegarde tout le /home/mon_login sauf le repertoire /home/mon_login/.aMule dans le dossier de destination /repertoire_de_sauvegarde.

Si /repertoire_de_sauvegarde n'est pas vide, un message nous indique qu'il faut utiliser l'option –force et dans ce cas, son contenu est supprimé. Donc attention, dans ce cas, à sauvegarder le contenu de /repertoire_de_sauvegarde au préalable.

Supprimer des sauvegardes

Pour supprimer les différences accumulées au fur et à mesure que l'on a ajouté des sauvegardes :

rdiff-backup --remove-older-than 1W --force /repertoire_de_sauvegarde

Ici on enlève toutes les modifications enregistrées vieilles de plus d'une semaine. On peut mettre D(ay),W(eek), M(onth) et Y(ear).

S'il il y a plusieurs sauvegardes à supprimer, la commande échoue. C'est pourquoi il faut rajouter le paramètre –force pour ne pas prendre cette erreur en compte et que rdiff-backup effectue bien ce qu'on lui demande.

Tester un backup

Pour vérifier que nos sauvegardes fonctionnent bien, on peut restaurer une sauvegarde :

rdiff-backup -r now /repertoire_de_sauvegarde /repertoire_de_restauration

L'option -r now permet de remettre la version de la sauvegarde la plus récente. On peut remonter dans les sauvegardes, par exemple remettre le repertoire d'il y a 3 jours avec l'option -r 3D.

Rdiff-backup fait une replication parfaite des fichiers dans leur dernière version. Ainsi pour restaurer des données, il suffit de faire cp -a /backupDir /restoredDir

Voir la liste des sauvegardes

 rdiff-backup -l /repertoire_de_sauvegarde

Sauvegarder sur une machine distante, via SSH

Remplacer /repertoire_de_sauvegarde par <utilisateur>@<adresse_ip_de_la_machine_distante>::<repertoire_de_sauvegarde_sur_la_machine_distante>

Plus d'infos sur SSH ici

Automatiser les sauvegardes

Voici la partie vraiment intéressante : comment faire pour que nos commandes précédentes se lancent de façon automatique, de façon à ce que l'on ait pas à les faire manuellement chaque jour ?

Journaliser les tâches

Tout d'abord quelques mots sur les logiciels journalisation de tâches : Actuellement on dispose de trois outils sous linux pour cela :

Dans notre cas, nous allons utiliser cron, cron utilise la crontab qui permet d'indiquer les tâches que l'on veut réaliser et à quelle fréquence.

Pour éditer la crontab, il suffit de faire :

crontab -e

Pour journaliser notre tâche, on indique à cron d'exécuter le script ~/sauve_mon_dossier.sh chaque jour à 20h00.

On met donc la ligne suivante dans notre crontab :

00    20    *    *     *    ~/sauve_mon_dossier.sh

Celle-ci signifie tous les jours à 20h00 lance le script /root/sauve_mon_dossier.sh . C'est bien les minutes d'abord et les heures ensuite, il n'y a pas d'erreur. Pour plus d'informations sur le formalisme du crontab, je vous invite à consulter cette page.

Le script

Ensuite, il reste à faire le script pour lancer les sauvegardes. On édite donc le fichier ~/sauv_mon_dossier.sh avec son éditeur favori et on y insère les lignes suivantes :

#!/bin/sh
nice -n 19 rdiff-backup --exclude /home/login/.aMule /home/login /mnt/save && nice -n 19 rdiff-backup --remove-older-than 1W --force /mnt/save

Le nice -n 19 signifie que lorsqu'on lance les commandes, elles s'exécutent avec la priorité la plus petite par rapport aux autres processus, ceci afin d'éviter que l'ordinateur ne se mette à ramer tous les jours à 20h00.

On sauvegarde le script et on n'oublie pas de mettre les droits d'éxecution sur le fichier :

chmod +x ~/sauv_mon_dossier.sh

Voilà c'est fini, on peut simplement vérifier que le script fonctionne bien en le lançant :

~/sauve_mon_dossier.sh

Normalement rdiff-backup se lance, fait sa sauvegarde et vous informe ensuite qu'il a ou non supprimé les sauvegardes plus vieilles d'une semaine.

Trucs & astuces

* Pour afficher les listes des sauvegardes :

rdiff-backup -l repertoire_de_sauvegarde

* Pour KDE (Kubuntu), il existe une interface graphique nommée Keep et qui condense toutes ces actions de sauvegarde. Vous pouvez egalement aller voir la page keep du wiki.

* Pour Gnome, il y a aussi une intreface : pybackpack

Références

Un bon site qui m'a permis de construire ce tutoriel : Rdiff-backup (en)


Contributeurs : Herbie, ostaquet

Basé sur http://debuntu.tuxfamily.org